// modules/goodModule/pages/goods/detail/detail.js
import { reqGoodsInfo } from '../../../api/goods'
import { userBehavior } from '../../../behaviros/userBehavior'
import { reqAddCart,reqCartList } from '@/api/cart'

Page({

	behaviors : [userBehavior],

  // 页面的初始数据
  data: {
	goodsInfo: {}, // 商品详情
    show: false, // 控制加入购物车和立即购买弹框的显示
    count: 1, // 商品购买数量，默认是 1
		blessing: '', // 祝福语
		buyNow : 0 , // 控制是加入购物车还是立即购买，0 加入购物车， 1 立即购买 
		allCount : '', // 商品的购买数量
	},

	// 全屏预览图片
	previewImage(){
		wx.previewImage({
			urls: this.data.goodsInfo.detailList,
		})
	},

  // 加入购物车
  handleAddcart() {
    this.setData({
			show: true,
			buyNow : 0
    })
  },

  // 立即购买
  handeGotoBuy() {
    this.setData({
			show: true,
			buyNow : 1
    })
  },

  // 点击关闭弹框时触发的回调
  onClose() {
    this.setData({ show: false })
  },

  // 监听是否更改了购买数量
  onChangeGoodsCount(event) {
		// console.log(event.detail)
		this.setData({
			count : Number(event.detail)
		})
  },

	// 弹窗的确定按钮触发的事件 处理函数
	async	handlerSubmit(){
		// 解构所需要的数据
		const { token , count , blessing ,buyNow} = this.data;
		// 商品的 Id
		const goodsId = this.goodsId;

		// 判断用户是否进行了登录，如果没有登录，需要跳转到登录页面
		if (!token) {
			wx.navigateTo({
				url: '/pages/login/login',
			})
			return
		}

		// 区分处理加入购物车以及立即购买
		// 如果 buyNow === 0，说明是加入购物车，
		// 如果 buyNow === 1，说明是立即购买
		if(buyNow === 0) {
			const res = await reqAddCart({goodsId,count,blessing})
			console.log('加入购物车',res)
			if (res.code === 200) {
				wx.toast({title: '加入购物车成功'})
				// 在加入购物车成功以后，需要重新计算购物车商品的购买数量	
				this.getCartCount();
				this.setData({ show: false })
			}
		} else {
			// 跳转到结算页面
			wx.navigateTo({
				url: `/modules/orderPayModule/pages/order/detail/detail?goodsId=${goodsId}&blessing=${blessing}`,
			})
		}

	},

	// 根据商品Id，获取商品详细信息
	async getGoodsInfo () {
		// 将解构出来原本属性名是 data 修改为 goodsInfo
		const { data:goodsInfo } = await reqGoodsInfo(this.goodsId)
		// console.log('商品详细信息',data)
		this.setData({goodsInfo})
	},

	// 获取购物车里面商品的数量
	async	getCartCount () {
		// 使用 token 来判断用户是否进行了登录
		// 如果没有 token，说明用户没有登录，就不执行后续的逻辑
		if(!this.data.token){
			return;
		}

		// 如果存在 token，说明用户进行了登录，获取购物车列表的数据
		// 然后计算得出购买的数量


		const res = await reqCartList();
		console.log('购物车里面商品的数量',res)
		// 判断购物车中是否存在商品
		if (res.data.length !== 0) {
			// 累加得出的商品购买数量
			let allCount = 0;
			res.data.forEach((item) => {
				allCount += item.count
			})

			this.setData({
				// info 属性的属性值要求是 字符串类型
				// 而且如果购买的数量大于99,页面上需要展示99+
				allCount : (allCount > 99 ? '99+' : allCount) + ''
			})
		}
	},

  onLoad(options) {
		// console.log('商品列表传递过来的Id',options)
		// 接收传递的商品 Id，并且将商品 Id 挂载到 this 上面
		this.goodsId = options.goodsId;
		// 调用获取商品详情数据的方法
		this.getGoodsInfo();

		// 调用获取购物车里面商品的数量的方法
		this.getCartCount();
	},
	
	// 事件监听函数：转发功能，转发给好友、群聊
	onShareAppMessage() {
		return {
			title: '所有的怦然心动，都是你',
			path: '/pages/index/index',
			imageUrl: '../../../../../assets/images/love.jpg'
		}
	},
	// 事件监听函数：能把小程序分享到朋友圈
	onShareTimeline(){

	}
})
